package current.limiting.utils;

import java.util.concurrent.TimeUnit;

/**
 * current-limiting 项目工具类
 *
 * @author LiKun
 * @date 2021/10/25 14:01
 */
public final class LimitUtil {
    public static final String POINT = ".";

    /**
     * 将给定的前缀和后缀通过 '.' 拼接在一起并返回
     *
     * @param prefix 给定的前缀
     * @param suffix 给定的后缀
     *
     * @return 拼接后的字符串
     */
    public static String concatPoint(String prefix, String suffix) {
        return (prefix + POINT + suffix).intern();
    }

    /**
     * 将给定的时间转换为对应的毫秒数
     *
     * @param val      时间数值
     * @param timeUnit 时间单位
     *
     * @return 对应的毫秒数
     */
    public static long time2Millisecond(long val, TimeUnit timeUnit) {
        long result;
        switch (timeUnit) {
            case SECONDS:
                result = 1000L;
                break;
            case MINUTES:
                result = 60 * 1000L;
                break;
            case HOURS:
                result = 60 * 60 * 1000L;
                break;
            case DAYS:
                result = 24 * 60 * 60 * 1000L;
                break;
            default:
                result = 1L;
                break;
        }

        return result * val;
    }
}
